Dynamic User Interface Customization

ABSTRACT

Described are computer-based methods and apparatuses, including computer program products, for dynamic user interface customization. A set of functions for a user interface is stored, each function comprising a function that can be added to the user interface. A first set of data is transmitted to a remote device that causes the user interface to be displayed on the remote device with a predetermined set of functions from the set of functions. Interaction data is received indicative of a user&#39;s interactions with the user interface. A second set of data is transmitted to the remote device that causes the user interface to dynamically add a new function from the set of functions to the user interface based on the interaction data, wherein the new function is displayed as a selectable item in the user interface that the user can select to use a function associated with the new function.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority to U.S. Provisional Application No.61/638,825, filed Apr. 26, 2012, and entitled “Dynamic User InterfaceCustomization,” which is incorporated herein by reference in itsentirety for all purposes.

TECHNICAL FIELD

The technical field relates generally to computer-based methods andapparatuses, including computer program products, for dynamic userinterface customization, and to dynamic communication and collaborationbetween businesses and consumers through a customizable user interface.

BACKGROUND

With the continued growth of internet use by consumers, live online helpservices have become increasingly important. Website providers canincorporate online chat options into their website page(s) to offer anadditional level of customer service to their users (e.g., in additionto the more traditional fillable information request forms, frequentlyasked questions pages, etc.). For example, many websites include a“click to chat” option, which a website user can use to engage ininteractive chat with a live help agent. When the user clicks the “clickto chat” button, a chat user interface is presented to the website user,and through the interface, the user is able to exchange chat messageswith the help agent. As another example, websites can include embeddedcode to automatically display a message to the user that includes a“click to chat” button (e.g., after the user has been idle on a page fora predetermined amount of time). There are several additional methods toengage a website user, and facilitate live interaction between the userand an agent. Regardless of the engagement method used, the help agentcan interact with the user through the chat to answer the website user'squestions, help navigate the user through the website, suggest products,and/or the like.

While online chat has become an increasingly common method used bywebsite owners to serve users, online chat may not scale well to addresseach individual user's needs. For example, if the live agent cannotsuccessfully help a website user via the chat, the chat user interfacemay not include sufficient functions and/or features to successfullyaddress the user's problem. Further, website providers currently facelimitations imposed by the chat user interface itself. For example, whencurrent chat interfaces are used, it is generally not possible to addany specific functionality to address the individual needs of thewebsite providers or website user.

Additionally, once a user is engaged with a particular communicationchannel (e.g., text chat, voice, video, etc.), then it is usuallydifficult to switch among other communication modalities withoutstarting a new engagement with the user. For example, once a user isengaged in an online chat session, a new communication channel (e.g.,with separate user interfaces, equipment, etc.) is often required tochange to a different communication modality (e.g., to set up a videochat instead of a standard text chat).

SUMMARY OF THE INVENTION

This disclosure provides a computer-implemented method, acomputer-program product, and a computer-implemented system, each ofwhich may be used to dynamically customize a user interface. The methodmay comprise the steps of storing, at a computing device, multiplefunctions for a user interface, wherein each of the stored functions isconfigured to operate on a remote user device, in conjunction with theuser interface, and wherein the user interface is configured to operateat the remote user device, transmitting a first set of data to theremote user device, wherein the first set of data causes a first one ofthe stored functions to operate on the remote user device, whereinoperating on the remote user device includes operating in conjunctionwith the user interface, receiving, at the computing device, interactiondata associated with user interactions with the user interface, theinteractions occurring at the remote user device, identifying a secondset of data based on the received interaction data, wherein the secondset of data is identified at the computing device; and transmitting thesecond set of data from the computing device to the remote user device,wherein the second set of data causes a second one of the storedfunctions to operate on the remote user device, in conjunction with theuser interface.

The system may include a processor which is configured to performoperations such as storing, at a computing device, multiple functionsfor a user interface, wherein each of the stored functions is configuredto operate on a remote user device, in conjunction with the userinterface, and wherein the user interface is configured to operate atthe remote user device, transmitting a first set of data to the remoteuser device, wherein the first set of data causes a first one of thestored functions to operate on the remote user device, wherein operatingon the remote user device includes operating in conjunction with theuser interface, receiving, at the computing device, interaction dataassociated with user interactions with the user interface, theinteractions occurring at the remote user device, identifying a secondset of data based on the received interaction data, wherein the secondset of data is identified at the computing device; and transmitting thesecond set of data from the computing device to the remote user device,wherein the second set of data causes a second one of the storedfunctions to operate on the remote user device, in conjunction with theuser interface.

The computer-program product may include instructions for causing acomputing device to perform operations including storing, at thecomputing device, multiple functions for a user interface, wherein eachof the stored functions is configured to operate on a remote userdevice, in conjunction with the user interface, and wherein the userinterface is configured to operate at the remote user device,transmitting a first set of data to the remote user device, wherein thefirst set of data causes a first one of the stored functions to operateon the remote user device, wherein operating on the remote user deviceincludes operating in conjunction with the user interface, receiving, atthe computing device, interaction data associated with user interactionswith the user interface, the interactions occurring at the remote userdevice, identifying a second set of data based on the receivedinteraction data, wherein the second set of data is identified at thecomputing device; and transmitting the second set of data from thecomputing device to the remote user device, wherein the second set ofdata causes a second one of the stored functions to operate on theremote user device, in conjunction with the user interface.

The computerized methods and apparatus disclosed herein allow dynamiccustomization of a user interface (e.g., a chat user interface) bydynamically adding interactive elements or functions (e.g., widgets) tocustomize the user interface based on a user's unique experience. Aunified communication channel allows seamless integration among variouscommunication modalities, such as chat, voice, and video communicationchannels. A brief summary of various exemplary embodiments is presented.Some simplifications and omissions may be made in the following summary,which is intended to highlight and introduce some aspects of the variousexemplary embodiments, but not limit the scope of the invention.Detailed descriptions of a preferred exemplary embodiment adequate toallow those of ordinary skill in the art to make and use the inventiveconcepts will follow in the later sections.

In one embodiment, a computerized method is featured. The computerizedmethod is for dynamically customizing a user interface. The methodincludes storing, by a computing device, a set of functions for a userinterface, whereby each function is configured so that it can be addedto the user interface. The method includes transmitting, by thecomputing device, a first set of data to a remote device that causes theuser interface to be displayed on the remote device with a predeterminedsubset of functions from the set of functions, wherein one or morefunctions from the predetermined subset of functions are displayed as aselectable item at the user interface, such that a user can select,activate or engage the function. The method includes receiving, by thecomputing device, interaction data indicative of a user's interactionswith the user interface. The method includes transmitting, by thecomputing device, a second set of data to the remote device that causesthe user interface to dynamically add a new function from the set offunctions to the user interface based on the interaction data, whereinthe new function is displayed as a selectable item in the userinterface, such that the function may be selected for use by the user.

In another embodiment, a computer program product, tangibly embodied ina non-transitory computer readable medium, is featured. The computerprogram product includes instructions configured to cause a dataprocessing apparatus to store a set of functions for a user interface,the set of functions including functions which can be added to the userinterface. The computer program product includes instructions configuredto cause a data processing apparatus to transmit a first set of data toa remote device that causes the user interface to be displayed on theremote device with a predetermined subset of functions from the set ofprimary functions, wherein one or more functions from the predeterminedset of functions are displayed as a selectable item in the userinterface that a user can select to use the function associated with theprimary function. The computer program product includes instructionsbeing configured to cause a data processing apparatus to receiveinteraction data indicative of a user's interactions with the userinterface. The computer program product includes instructions beingconfigured to cause a data processing apparatus to transmit a second setof data to the remote device that causes the user interface todynamically add a new function from the set of predetermined functionsto the user interface based on the interaction data, wherein the newfunction is displayed as a selectable item in the user interface thatthe user can select to use a function associated with the new function.

In another embodiment, an apparatus is featured. The apparatus is fordynamically customizing a user interface. The apparatus including aprocessor and memory. The apparatus is configured to store a set offunctions for a user interface, each function including a function thatcan be added to the user interface. The apparatus is configured totransmit a first set of data to a remote device that causes the userinterface to be displayed on the remote device with a predetermined setof functions from the set of functions, wherein one or more functionsfrom the predetermined set of functions are displayed as a selectableitem in the user interface that a user can select to use the functionassociated with the function. The apparatus is configured to receiveinteraction data indicative of a user's interactions with the userinterface. The apparatus is configured to transmit a second set of datato the remote device that causes the user interface to dynamically add anew function from the set of functions to the user interface based onthe interaction data, wherein the new function is displayed as aselectable item in the user interface that the user can select to use afunction associated with the new function.

In other examples, any of the aspects above can include one or more ofthe following features. The user interface can be a chat windowfacilitating chat between the user and a third party. A function fromthe set of functions can include an agent function that providesinformation about an agent that the user is in communication with, ashopping cart function that lists a set of products the user hasselected while browsing a website, a data transfer function thatdownloads data to the user, allows a third party to push data to theuser, or both, a video function that allows a user to control playbackof video content, an audio function that allow a user to controlplayback of audio content, or any combination thereof.

In some examples, data indicative of a new function is received, whereinthe new function includes a function that customizes the user interfacefor a third party, and adding the new function to the set of functions.The interaction data can be transmitted to an agent device. Action dataindicative of the user taking an action associated with a function of afunction on the user interface can be received, and the action data canbe transmitted to the agent device.

In other examples, data selecting a function from the set of functionsis received for addition to the user interface, and a third set of datais transmitted to the remote device that causes the user interface todynamically add the selected function to the user interface, such that afunction associated with the selected function is incorporated into theuser interface, wherein prior to addition of the selected function tothe user interface, the user interface did not include the functionassociated with the selected function. A third set of data can betransmitted to the remote device that causes the user interface todynamically add a second new function from the set of functions to theuser interface based on the interaction data, wherein the new functionis not displayed as a selectable item in the user interface. The secondnew function can listen for one or more events from the user interface.

In other examples, transmitting the second set of data to the remotedevice includes transmitting the second set of data based on dataindicative of a change of the user interface, data indicative of userinterface behavior, or any combination thereof. An interface can beconfigured to receive data to design a user interface experience. Theuser interface experience can include a function, an interaction modelbetween a first function and a second function, a behavior, arestriction for the user of the user interface, an agent the user is incommunication with, or both, an automated interaction model, a set ofpermissions for the user, or any combination thereof.

The techniques described herein are techniques capable of being embodiedin methods or apparatuses, and may provide or enable one or more of thefollowing features. The techniques may allow functions to be dynamicallyadded to, and/or removed from the user interface, such that the userinterface can be altered to suit an individual user and/or solveproblems or address needs associated with the user's interaction withthe interface. Further, new functions can be designed for addition tothe user interface to suit individual website provider needs. A singleengagement with a customer can provide a unified communication channelthat can seamlessly use any number of modalities to communicate with thecustomer. For example, various modalities such as chat communicationchannels, voice communication channels, video communication channels,and/or other communication channels can be seamlessly switched amongduring the single engagement with the customer.

Other aspects and advantages of the present invention will becomeapparent from the following detailed description, taken in conjunctionwith the accompanying drawings, illustrating the principles of theinvention by way of example only.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other aspects, features, and advantages of the presentinvention, as well as the invention itself, will be more fullyunderstood from the following description of various embodiments, whenread together with the accompanying drawings.

FIG. 1 is an exemplary diagram illustrating a computerized system fordynamic user interface customization;

FIG. 2A illustrates an exemplary diagram of a user interface beingdynamically customized;

FIG. 2B illustrates an exemplary diagram of a user interface beingdynamically customized;

FIG. 3 illustrates an exemplary computerized method for dynamic userinterface customization; and

FIG. 4 illustrates an exemplary computerized method for adding newfunctions for dynamic user interface customization.

DETAILED DESCRIPTION

In general, computerized systems and methods are provided fordynamically customizing a user interface through adding, removing,configuring or making available functionality, features, capabilities oroptions. In accordance with this disclosure, the customization of theuser interface may be done such that, from the perspective of theinterface user, all customized elements are completely integrated withthe interface. For example, in the case of a user and an agent incommunication over chat, the techniques, methods and systems of thisdisclosure may enable the agent (and/or the engagement service thatestablished the communication between the user and the agent) todynamically add and/or remove functions (e.g., either with or withoutgraphical interface component(s)) to/from the user interface tocustomize the user interface for the particular user, without any actionrequired on the user's part. For example, an agent may be able to add adesktop sharing function, a video function, and/or other functions tothe interface, as described herein.

FIG. 1 is a diagram illustrating an example computerized system 100 forfacilitating dynamic user interface customization through implementationof any combination of the techniques described herein. The system 100includes a user device 110, a web server 120, an engagement server 130,and an agent device 140. As depicted, each of these components isconnected for communication via network 150. The user device 110includes a browser 112 and user interface 114. Engagement server 130includes database 132 and customization component 134. The agentcomputer 140 includes agent user interface 142. The system 100 includesthird party server 160.

In accordance with this disclosure a user device such as the devicedepicted at 110 may be a personal computer, (e.g., a PC or a laptop)including a processor and memory. Alternatively, the user device 110 maybe a smart phone, a personal digital assistant, a tablet PC, and/or anyanother computing device capable of displaying browser 112 and/or theuser interface 114 to the user associated with the user device 110. Theuser device 110 may be a computing device capable of displaying webcontent using a web browser (e.g., the browser 112). The browser 112 maybe implemented through software used by the user device 110 to displayweb content received from the web server 120 (e.g., web pages). Forexample, the web browser may be Microsoft Internet Explorer.

Although FIG. 1 depicts browser 112, this specific inclusion is forexemplary purposes only. In certain embodiments of this disclosure, theuser device 110 may display user interface 114 without the interfacebeing associated with a web browser. Additionally, while FIG. 1 onlyincludes a single user device 110, the system can include multiple userdevices. When such an arrangement is used, two or more users mayparticipate in a joint engagement (i.e. more than two parties involved)with agent computer 140 (or multiple agent computers, not shown). Forexample, two users can participate in an engagement that is moderated byan agent.

The user interface 114 may be, for example, a chat window facilitatingchat between the user of the user device 110 and a third party (e.g.,the agent operating agent device 140). For example, if the userencounters difficulties navigating a web page displayed by the browser112, the user can initiate a chat help session (e.g., by clicking a“click to chat” button) with an agent who is operating agent device 140.In this way, the agent may be able to help the user properly navigatethe web page. The user, via the user interface 114, can chat with theagent to learn how to navigate the web page.

In other example embodiments included within the scope of thisdisclosure, the user interface 114 may be, or may include, a video chatinterface, online help interface, or any other type of user interface.In certain implementations of the techniques presented herein, the userinterface 114 may be configured so as to not be displayed on the userdevice 110 until after an initializing action (or other predeterminedcriteria) is taken by the user of the user device 110. Additionally oralternatively, the user interface 114 may be configured such that theinterface 114 enables the user to minimize, maximize and/or controlpredetermined aspects of the user interface 114.

In accordance with this disclosure, the web server 120 may be, forexample, a single web server with a processor and memory. In otherembodiments, the web server 120 may comprise a plurality of web serversconfigured to provide web services (e.g., to serve web site content).The web server 120 may provide content which may be accessed at the userdevice 110 through utilization of browser 112.

The engagement server 130 can be, for example, a single server with aprocessor and memory. In some embodiments, the engagement server 130 mayinclude multiple servers connected directly to each other, or connectedthrough the network 15. The engagement server 130 can be configured toprovide any number of technical solutions or capabilities. One suchpossible capability may be provided to an agent who, through operatingagent device 140, provides customer service or assistance to a useroperating user device 110. The solution provided by the engagementserver 130 to the agent may involve providing the agent withcapabilities associated with the agent's operation of agent device 140.With these capabilities, the agent may be able to provide improved orenhanced customer service, help, recommendations to users (e.g.,visitors to a website, such as user devices 110 loading web contentprovided by web server 120 via browser 112) or improved management ofcommunicative connections with users. For example, the engagement server130 can establish an online chat help session between the user device110 and the agent device 140. The engagement server 130 may beconfigured to provide such a capability in response to a user clicking a“click to chat” button at user device 110, in response to a web pagebeing displayed in the browser 112, or upon satisfaction of some otherpredetermined criteria established by code associated with browser 112,etc.).

Additionally or alternatively, the engagement server 130 may beconfigured to provide a number of services to remote users (e.g., usersinteracting or interfacing with a device such as user device 110). Thecustomization component 134 may be configured to dynamically customizethe user interface 114. The customization component 134 may beconfigured to use data from past user or agent engagements (e.g.,historical data indicative of functions which were activated, used ordisplayed, or were otherwise associated with a user interface, andwhether the engagement(s) associated with these functions weresuccessful). The customization component 134 may be configured withcapabilities for intelligently learning from the data how to optimize aparticular user experience, based on previous successful engagements.The customization component 134 can process such data and use the datato customize user interfaces. This processing and customizing mayinvolve using rules (e.g., stored in database 132), predictiveanalytics, multivariate analysis and testing, and/or other methods oranalytics.

For example, in one aspect of the present disclosure, the engagementserver 130 may receive data indicative of user actions occurring on theuser device 110 (e.g., taken by a user of the user device 110). Thecustomization component 134 may then use the received data tointelligently add and/or remove functions from the user interface 114.As another example, the engagement server 130 can receive data from theagent user interface 142. This data may include instructions to addand/or remove functions from the user interface 114, and may be used bythe customization component 134 to execute appropriate action inresponse to the instructions.

The engagement server 130 can transmit data to the agent device 140(e.g., to the agent user interface 142) that provides feedback about theuser interface 114 and/or about a user's current or past experience withthe interface 114. For example, engagement server 130 may providefunctions or capabilities to an agent, so that the agent may push newfunctions and/or content to the user interface 114. The agent may beenabled to push these functions and/or content via agent user interface142, in conjunction with network 150. However, the agent may need toknow a current configuration of the user interface 114 before selectinga new function to be pushed to the user interface 114. In this case, theengagement server 130 may be configured to transmit data which describesa user's experience with user interface 114. The data may be transmittedto the agent device 140, thereby enabling the agent to understand theuser's experience on the user interface 114, and/or the currentconfiguration and/or functionality of the user interface 114. Forexample, the engagement server 130 can transmit a snapshot of the userinterface 114 at a particular time. The snapshot may be transmitted toagent device 140, thereby enabling the agent to ascertain the userinterface 114 configuration. The agent can use the data to determinewhat the user is experiencing through the user interface 114, and canuse that determination to customize the user interface 114 by adding newfunctions to it.

In accordance with certain embodiments of this disclosure, theengagement server 130 may be configured to cause an agent user interface142 to be displayed at agent device 140. This interface on agent device140 may enable the agent to receive data pertinent to helping a userand/or customizing a user interface experience for the user associatedwith user interface 114. For example, once the engagement server 130causes an agent user interface 142 to be displayed on the agent device140, the engagement server 130 may then receive data associated with theagent's interactions or experience with agent user interface 142.Additionally or alternatively, the engagement server may receive dataassociated with a user's interactions or experience with user interface114. The engagement server may be configured to use this data toappropriately customize agent user interface 142 or user interface 114.

As described herein, a user or agent experience with an interface may beunderstood to include, be characterized by, or be affected by, one ormore functions operating in conjunction with the interface, aninteraction model between a first function and a second function (e.g.,which describes how the two functions interact with one another), useror agent behavior (e.g., a combination of user or agent interaction withone or more components or functions associated or operating inconjunction with the interface), a restriction affecting a user and/oragent interacting with the interface, an automated interaction model(e.g., which may executed by the engagement server 130 to determine whento dynamically alter the user interface 114 or agent user interface 142,based on previously collected data), a set of permissions for the userof the user device 110, or any other arrangement(s) recognizable, inlight of this disclosure, to an artisan of ordinary skill in any one ofthe arts to which this disclosure pertains.

This paragraph will discuss one possible example implementation ofcertain of the techniques and methods disclosed herein. This exampleimplementation is presented only for the purposes of demonstrating oneway in which data related to a user experience may be used, inaccordance with this disclosure, to customize an interface. In thisexample implementation, user behavior data may be used by engagementserver 130 for purposes of customizing an agent user interface (such asthe one shown at 142) or a user interface (such as the one shown at114). In this case, engagement server 130 may be configured to installcertain functions which operate on user device 110 or agent device 140,and in conjunction with user interface 110 or agent user interface 142,as the case may be. These particular functions, when installed oractivated, may provide functionality based on, or in response to, useror agent interaction data associated with the user interface 114 oragent user interface 142. This interaction data may be received andprocessed by engagement server 130, and additionally, in someembodiments, may then be provided to agent device 140 by the engagementserver 130.

Implementations such as those which are consistent with theaforementioned implementation description may enable an agent tointelligently affect a user's experience or customize the user interface114 based on the user's or agent's current behavior. For example, theengagement server 130 may be configured to provide an agent withinformation relevant to serving the user, whereby the providedinformation is selected by the engagement server 130 based on detectionof a specific term provided by the user or agent in chat or in anothertype of communication session. A function operating on agent device 140or user device 110 may be used to detect such a term. The function mayinform engagement server 130 that the term has been used. The engagementserver 130 may then apply a business rule to analyzes the term anddetermine the term if it is associated with a relevant product.Alternatively, the function may apply the rule to analyze the term. Ineither case, the function or the engagement server 130 could cause anadditional function to be incorporated into the user interface 110 oragent user interface 142. The additional function could be configured toprovide product information to the user or agent related to any productdetermined to be relevant, in view of the detected term and the businessrule.

The engagement server 130 may be configured to include a database 132.In an embodiment of this disclosure, the engagement server 130 may beconfigured to use the database 132 to store feedback informationindicative of the state of user interface 114. For example, theengagement server 130 can keep a log of all functions added to and/orremoved from the user interface 114 (e.g., added automatically via theengagement server 130, and/or added via an agent through the agent userinterface 142), and can be configured to use the log to determine acurrent state of the user interface 114.

In some examples, the user interface 114 can include a function thattransmits feedback information to the engagement server 130. Forexample, a function can be configured to periodically send data to theengagement sever 130 indicative of a snapshot of the user interface 114(e.g., at predetermined time intervals or upon request from theengagement server 130). Based on this snapshot, the Agent may beprovided with a detailed visual depiction of the visitor's experience,as well as a visual depiction of what the visitor sees at user interface114. In this way, the system may suggest next steps to the agent basedon the current view or experience of the visitor.

The database 132 stores, for example, the functions that can be added toand/or removed from the user interface 114. For example, a function canbe an agent function that provides information about an agent (e.g., theperson using the agent user interface 142 on the agent device 140, whichmay be in some sort of communication with the user device 110 via onlinechat, video chat, voice chat, etc.) that the user of the user device 110is in communication with through the user interface 114. As anotherexample, the function can be a shopping cart function that lists a setof products the user of the user device 110 has selected while browsinga website, using the browser 112, that is provided by the web server 120(e.g., an online catalog). As another example, the function can includea data transfer function that downloads data to the user (e.g., acoupon), allows a third party to push data to the user (e.g., allows theagent device 140 to upload a file, document, presentation, work file,etc. to the user device 110), and/or the like. As another example, thefunction can be a video function that allows a user to control playbackof video content (e.g., to play, pause, stop a video being streamed tothe user). As another example, the function can be an audio functionthat allows a user to control playback of audio content (e.g., to play,pause, stop audio being streamed to the user). As another example, thefunction can be a social engagement function (e.g., Twitter, Facebook,etc.) that allows a user to push the engagement between it and the agentdevice 140 (e.g., an online chat) into the user's social engagementapplication to continue the experience in the user's social engagementapplication. As another example, the function can provide a service thataffects the user's experience (e.g. a translation service). As anotherexample, the function can be a secure information transfer function(e.g., which is compliant with the PCI Security Council standards forthe exchange of credit card numbers) that allows transfer of PersonalIdentifiable Information (PII) over the communication channel (e.g.,over chat).

In some examples, a function can be configured to detect events, and totake one or more actions based on the detected events. For example, adetected event may be triggered by a user's actions taken on the userdevice 110, the browser 112, the user interface 114, etc. Such eventscan also be events which occur in response to one or more otherfunctions associated with the user interface 114, etc. The functions canbe configured to send data to the engagement server 130 (and/or theagent user interface 142). For example, the functions can be configuredto transmit data indicative of state changes and user interfaceinteraction. For example, the video function can transmit data to theengagement server 130 indicative of the user's actions taken withrespect to the video function (e.g., transmit information indicative ofthe user pressing play on the user interface 114, information indicativeof the user pressing pause on the user interface 114, etc.).

This disclosure shall not be interpreted to be limited in scope by themention or description of example functions presented herein. Rather,the functions specifically presented and described are included forexample purposes only. This disclosure is intended to cover any and allfunctions which may expand, limit, alter, track, monitor, improve,document or otherwise affect a user experience associated with a userinterface such as user interface 114. This disclosure is also intendedto cover the many other types of related or applicable functions whichwould, in view of this disclosure, be readily recognizable to a personskilled in one or more of the arts to which this disclosure applies.

In some examples, the functions are added to the user interface 114without changing the visual display of the user interface 114. Suchfunctions may be thought of as behind-the-scenes functions with respectto the user interface 114. For example, a function can be added thattracks events and initiates responsive actions based on the detectedevents. For example, a function can detect a reception of data sent tothe user device 110 from the agent device 140 (e.g. messages from theagent operating the agent user interface 142) and initiate actions basedon the received data (e.g., transmitting a message in response to thereceived data). As another example, a function can be added to detect auser's interaction with other functions of the user interface 114. Thismay enable the detecting function to initiate actions which aredetermined to be appropriate based on the user's interactions with theuser interface 114.

The agent device 140 can be, for example, a personal computer (e.g., aPC or a laptop) which includes a processor and memory. Alternatively,and in accordance with this disclosure, the agent device 140 may a smartphone, a personal digital assistant, a tablet PC, and/or any anothercomputing device capable of providing the agent user interface 142and/or operations or processing associated with it. The agent userinterface 142 may be configured so that the the agent interfacing withthe agent device 140 is able to control, activate, remove and/or invokefunctions provided by the engagement server 130. For example, the agentinterface 142 may be configured to that the agent has the option ofactivating a chat help session involving the user device 110). Anexample agent console is described in U.S. patent application Ser. No.13/413,197, which was filed on Mar. 6, 2012, entitled“Occasionally-Connected Computing Interface,” and which is incorporatedby reference herein in its entirety. The agent user interface 142 canalso display a detailed visual “playback” of historical user experiencedata (e.g., historical charts and/or graphs of function usage, successrates for functions, etc.). The historical user experience data caninclude, for example, historical data collected from previously-deployeduser interfaces, such as which functions were used for the userinterface and whether the engagement was successful (e.g., whether anagent was able to solve the user's problem via the user interface). Thehistorical data playback can be used, for example, for backtracking andanalysis capabilities, as well as the use of Natural Language Processing(NLP) (e.g., which can analyze text in a text chat) to identifycorrelations and insights of functions (or user interfaceconfigurations) by looking at the functions and/or the engagementexperience. While the terms “agent” and “agent device” are used herein,the terms should be interpreted broadly to include any end user, such asa typical agent as well as a user similar to that using the user device120. As another example, an agent can be a business ambassador for acompany (e.g., a representative or spokesperson for the company).

Network 150 can be, for example, a packet-switching network that canforward packets to other devices based on information included in thepacket.

Third party server 160 can provide services for functions added to theuser interface 114 (e.g., in addition to those services provided by theengagement server 130). The engagement server 130 can be configured toincorporate technologies from the third party sever 160 (and/or otherthird party servers, not shown), which can add to the robustness of theexperience presented to the user through the user interface 114. Theengagement server 130 can incorporate disparate technologies and/orapplications into the user interface 114 (e.g., much like an operatingsystem).

The system 100 is an example of a computerized system that is configuredto perform the methods described herein. However, the system structureand content recited with regards to FIG. 1 is presented for exemplarypurposes only and is not intended to limit this disclosure toimplementations involving the specific structure shown in FIG. 1. Aswill be apparent to one of ordinary skill in the art, many recognizablesystem structures can be used to implement the techniques and methodsdescribed herein, without departing from the scope of this disclosure.For example, a web server 120, while included for illustrative purposes,may be omitted without departing from the spirit of the invention. Asanother example, a plurality of user devices and/or agent devices (notshown) may be used in the system 100.

In addition, information may flow between the elements, components andsubsystems described herein using any technique. Such techniquesinclude, for example, passing the information over the network usingstandard protocols, such as TCP/IP, passing the information betweenmodules in memory and passing the information by writing to a file,database, or some other non-volatile storage device. In addition,pointers or other references to information may be transmitted andreceived in place of, or in addition to, copies of the information.Conversely, the information may be exchanged in place of, or in additionto, pointers or other references to the information. Other techniquesand protocols for communicating information may be used withoutdeparting from the scope of the invention.

FIGS. 2A-2B depict an example of user device components involved indynamic customization of a user interface, in accordance with certain ofthe methods disclosed herein. FIG. 2A depicts a user device 202, a webbrowser 204, and a user interface 206. Furthermore, as depicted in FIG.2A, user interface 206 includes functions 208A, 208B. The user interface206 also includes a chat console 210.

FIG. 2B depicts each of the aforementioned components shown in FIG. 2A,and also includes function 208C, which will be explained in greaterdetail in following paragraphs. FIGS. 2A and 2B are used forillustrative purposes only. In accordance with this disclosure, a userinterface may include any number of additional and or alternativefunctions and components. For example, a user interface such as userinterface 206 may include other interactive components or features inaddition to, or instead of, chat console 210. Also, a user interfaceneed not include any active functions (e.g., the user interface mayinclude simply a list of functions which are selectable by the user).The user interface 206 may be an interface associated with a computer tocomputer connection, a video display (e.g., with notification that thevideo is being watched), and/or any other type(s) of engagement orcommunication interface (e.g., an interface linking the agent device 140and the user device 110). For example, certain user interfaces which arewithin the scope of this disclosure are described in U.S. patentapplication Ser. No. 13/371,163, entitled “Analytic Driven Engagement,”filed on Feb. 10, 2012, which addresses analytic driven engagement, andis incorporated herein in its entirety. In some examples, the initialuser interface 206 is not displayed on the web browser 204 until theuser device 110 or engagement server 130 determines the user interface206 should be displayed (e.g., the engagement server 130 may make such adetermination based on interaction data, as is described further below).

FIG. 3 illustrates an example computerized method 300 for dynamic userinterface customization in accordance with the present disclosure. Thediscussion of the method depicted in FIG. 3 will refer back to previousFIGS. 1, 2A and 2B, as these previous figures depict components andelements which may be involved in certain of the method steps describedin FIG. 3.

As depicted in FIG. 3, at step 302, the engagement server 130 stores aset of functions which may be installed or activated on a user interface(e.g., for user interface 114). In certain embodiments, the userinterface may, but need not neccessarily, be displayed in a browser suchas the one depicted at 112. At step 304, the engagement server 130transmits a first set of data to user device 110. This transmitted datacauses the user interface 114 to be displayed on the user device 110such that the interface displays a predetermined set of the functionsstored at engagement server 130. The data causes these displayedfunctions (e.g., functions 208A and 208B, as shown in FIG. 2A) to beincorporated into the user device 110. At step 306, the engagementserver 130 receives interaction data from the user device 110. Asdepicted, the interaction data is indicative of a user's interactionswith the browser 112 and/or the user interface 114. At step 308, theengagement server 130 transmits a second set of data to the user device110. The second set of data is selected by the engagement server 130based on the interaction data, and causes the user interface 114 todynamically add a new function from the stored set to the user interface114.

Referring to step 302, each function stored at the engagement server 130may be a function which can be added to the user interface 114. Forexample, the stored functions may be functions such as the functionsdescribed above with respect to FIG. 1. These functions include videoplayback, audio playback, file transfer, and/or any other function whichcould be configured to be incorporated into the user interface 114.

Referring to step 304, the first set of data (e.g., data whichdetermines which functions will be initially included in the userinterface 206) can be predetermined and stored in a configuration file.The engagement sever 130 can store such a configuration file in adatabase such as database 132, for example. The configuration file canbe configured for a particular customer of the engagement server 130.For example, the customer may be a website provider (e.g., web server120, which provides content that can be loaded by a browser such as thebrowser depicted at 112). The website provider can configure itswebsite, such that, when the website is requested by the browser 112, acode module is loaded in the browser 112. The code module, when loaded,may then control the time at which the user interface 114 is displayedto the user of the user device 110. For example, a code module of thistype may prevent the user interface 114 from being displayed until afterthe user clicks a “click to chat” button, or until after the user hasremained at a particular web page in browser 112 for a predeterminedperiod of time (e.g., ten seconds), and/or the like.

Referring further to step 304, the first set of data need not causeactual display of functions on the user interface 114. For example, theengagement server 130 can transmit data to the user device 110 whichcauses the user interface 114 to dynamically incorporate or activate afunction such that the new function is not displayed in the userinterface (e.g., the function adds functionality to the user interface114 without requiring a displayed component). For example, such afunction can include javascript code executable by the user's browser112 for monitoring and storing information related to user interactionswith websites loaded using the browser 112. As another example, thefunction can include javascript code that (e.g., when executed by thebrowser 112) for detecting one or more events associated with the userinterface 114 (e.g., button presses, menu-item selections, checkboxselections, and/or other graphical user interface interactions).

Referring further to step 304, certain of the function(s) in the set offunctions stored at engagement server 130 may be displayed for selectionwithin the user interface 114. In this way, a user operating user device110 may select the function for use, activation or installation when itis displayed. Displaying a function for selection may include, forexample, displaying a clickable icon, menu item, checkbox, and/or anyother graphical user interface component which can be used or invoked bya user.

Referring to step 306, the engagement server 130 can receive interactiondata indicative of the user's interactions with the browser 112 and/orthe user interface 114. For example, the browser 112 can include a codemodule (not shown) which executes in the browser 112 to track and storethe user's navigation or search history associated with the user's useof browser 112. The code module can cause this stored interaction datato be transmitted to the engagement server (e.g., on command,periodically, etc.). As another example, the user interface 114 caninclude a code module which monitors a user's interactions with the userinterface 114 (via the user device 110).

Referring further to step 306, the engagement server 130 can use theinteraction history data to determine when to add and/or removefunctions from the user interface 114 (while method 300 addresses addingfunctions, functions can also be removed from the user interface 114).For example, the engagement server 130 can reference a stored set ofrules which describe when to add a function to the user interface 114.The engagement server can use the rules by processing the interactiondata in light of the rules. In this way, the engagement server 130 canuse the rules (and/or other similar forms of artificial intelligence) todetermine which functions are added and/or removed from the userinterface 114 (to provide the user with the best possible experience).In some examples, the engagement server 130 uses data indicative of achange of the user interface 114 (e.g., data that is transmitted betweenthe user interface 114 and the engagement server 130 that providesconstant updates about what is occurring with the user interface 114 onthe user device 110), data indicative of user interface behavior (e.g.,interaction among functions), or both, to determine when to add and/orremove functions from the user interface 114.

As another example, the engagement server 130 can transmit theinteraction data to the agent device 140. An operator of the agentdevice 140 can use the agent user interface 142 to view the interactiondata to determine when to add/remove functions from the user interface114 (e.g., if the user clicked on a video link displayed using a videofunction, if the user started playback of the video using the videofunction, if the user paused playback of the video using the videofunction, etc.). The operator can transmit a signal to the engagementserver 130 to cause the engagement server 130 to transmit a new functionto the user device 110 for incorporation into the user interface 114.

Referring to step 308, the user device 110 dynamically adds the newfunction to the user interface 114. As described above, the new functionmay include a visual aspect (e.g., a checkbox, menu item, button, icon,etc.). In some examples, the new function is displayed as a selectableitem in the user interface 114 that the user can select to use afunction associated with the new function (e.g., new function 208C ofFIG. 2B, which was newly added to the interface 206 from FIG. 2A, whichonly includes functions 208A and 208B). For example, once a function isadded to the user interface 114, the user can invoke the functionalityof the new function by clicking an icon associated with the function.

As an example of method 300, referring to FIGS. 2A and 2B, assume anagent is conducting an online chat with a user of the user device 202(e.g., a situation in which an online chat involves the agent userinterface 142 of agent device 140, and the user interface 206 includesthe chat console 210) to help the user navigate a website loaded in thebrowser 112. In this case, the agent user interface 142 may display thechat information entered by the user via the chat console 210. The agenton the agent device 140 can determine, for example, that it is mostbeneficial to play a movie for the user. In accordance with thetechniques disclosed herein, the agent, by using the agent userinterface 142, may be able to send a command to the engagement server130. The command may cause a new function, such as function 208C, to beloaded in the user interface 206. In this way, the user may be providedwith the ability to control playback of the desired video content. Forexample, function 208C can include playback controls (e.g., pause, fastforward, rewind, etc.) that the user of the user device 110 can use tocontrol playback of the video content. The function 208C can include alistening component (and/or the engagement server 130 can send a secondfunction to the user device 110) that monitors which of the playbackcontrols are used, and transmits information indicative of the same tothe agent user interface 142. For example, when the user invokes, usingthe user interface 114, the play button, the function transmits data tothe agent device 140 indicative of the user starting playback of thevideo content.

As another example, referring to FIGS. 2A-2B, the engagement server 130establishes a chat communication between the user of the user device 202(via the chat console 210) and an agent (e.g., via agent user interface142 of FIG. 1). The user begins asking the agent about the websiteloaded in the web browser 204 (e.g., the user is having troublenavigating the website). It becomes apparent through the chatconversation that the agent can better assist the user by viewing thesame webpage, however the user interface 206 does not include desktopsharing. Therefore, the agent causes the engagement server 130 to add adesktop sharing function to the user interface 206 (e.g., function208C). The user can invoke the desktop sharing function by selecting thefunction (or, in some examples, the user need not take any action toinvoke the function). The desktop sharing function can share the user'sscreen with the agent, so that the agent can guide the user throughnavigating the web page on the user's web browser 204.

The agent can add (and/or remove) any number of functions to the userinterface 206 (e.g., video playback, file transfers, etc.). For example,if the agent is still having trouble helping out the user, the agent canadd a video function so the conversation can escalate to a video chat.The experience is in the user interface, and the user interface canchange form to best suit addressing the user's problem. For example,while systems often use separate channels for online chat, voice, andvideo communications, the user interface 206 can provide a unifiedcommunication channel that allows the agent to seamlessly switch amongdifferent communication modalities with the user. The communicationmodalities can also include traditional communication channels (e.g.,phone communications over the PSTN). For example, the agent can switchfrom chat to voice communication, and then switch again from voice tovideo communication, all while using the same user interface 206. Theagent can add and/or remove the additional communication modalities by,for example, adding and/or removing functions from the user interface206. For example, if an agent determines that he needs to move from achat communication to a voice communication, the agent can add a voicecommunication function (e.g., via the agent user interface 142) to theuser interface 206 such that the user interface 206 can provide both thechat communication and the voice communication to the user of the userdevice 110 (e.g., the user can click the newly-added voice communicationfunction to engage in voice communication with the agent without openingany additional interfaces or taking any further actions on the userdevice 110).

FIG. 4 illustrates an exemplary computerized method 400 for adding newfunctions for dynamic user interface customization. At step 402, theengagement server 130 receives data indicative of a new function. Atstep 404, the engagement server 130 adds the new function to the set offunctions (e.g., adds the function to the database 132 for storage) sothat the new function can be incorporated into a user interface. At step406, the engagement server 130 receives data selecting the new functionfor addition to a user interface. At step 408, the engagement server 130transmits data to the remote device (e.g., to the user device 110) thatcauses the user interface (e.g., user interface 114) to dynamically addthe selected function to the user interface, such that a functionassociated with the selected function is incorporated into the userinterface, wherein prior to addition of the selected function to theuser interface, the user interface did not include the functionassociated with the selected function.

Referring to step 402, functions can be added to the engagement serverto add functions for a third party, such that the third party can usethe functions to customize the user interface based on the third party'sneeds. For example, if the third party is a new user of the engagementserver 130 dynamic customization services, the third party can createnew/additional functions designed specifically for the needs of thethird party. For example, if the third party would like to use a videofunction but there are no video functions (e.g., there are no videofunctions stored in the database 132, and/or the video function(s)stored in the database 132 do not include desired functionality), thethird party can create a new video function to include all the functionsdesired by the third party (e.g., via the agent user interface 142 ofFIG. 1).

The dynamic customization systems and methods described herein providefor flexibility of designing functions and customizing user interfacesto dynamically add and/or remove functions (e.g., during use of the userinterface, without any action required on the GUI user's part). Anyfunction can be configured to communicate with any other function(s)running in the user interface framework, and therefore the functions canbe used to design any kind of desired behavior. The communication andsignaling between the functions and/or the environment (e.g., the webbrowser, user interface, etc.) can be managed in a pluggable way. Forexample, a predefined language set can be implemented to support thecommunication and signaling. A user of the service can implementfunctions by designing their own callback procedures and callback namesto signal between, for example, two functions, that the user adds to theengagement server 130.

The dynamic customization systems and methods can measure the success ofan engagement. For example, it may be desirable to measure howsuccessful certain engagements are with users (e.g., where a successfulengagement is measured by whether a user's problem was solved, whetherthe user was satisfied with the engagement, etc.). As an example, thesystem may determine that engagements that start with chat communicationand then escalate to voice communication are more successful at solvingthe user's problems than those engagements that only use chatcommunication. As another example, it may be desirable to measure howoften a function is used in a successful user engagement. For example,an agent may be more likely to add a particular function to the userinterface 206 if it has a higher rate of success than other functions.

The user interface experience can be used on any device. For example, ifa user is interacting with the user interface on their home computer,they can continue the experience from their mobile phone. For example,the agent can send the user a code on the home computer, and the usercan scan the code using their mobile device by taking a picture of thecode and using a code converting application (the agent can send thecode using a code function). After scanning the code, the codeconverting application can re-create the user interface 114 on theuser's mobile device (and/or the interaction, such as chat, the user wasengaged in with the agent). The user can then continue the interactionson their mobile phone.

The engagement server 130 can provide a modular, personalized service toindividual users. For example, the engagement server 130 can associate auser with a brand. The brand can allow users to have an “assistant”(e.g., virtual assistant that goes everywhere with the user). If theuser asks the virtual assistant a question, it can initiate an onlinechat window with agents working for the brand (e.g., which can expandinto a movie, etc. based on the user's interactions with the agents).

The above-described techniques can be implemented in digital and/oranalog electronic circuitry, or in computer hardware, firmware,software, or in combinations of them. The implementation can be as acomputer program product, i.e., a computer program tangibly embodied ina machine-readable storage device, for execution by, or to control theoperation of, a data processing apparatus, e.g., a programmableprocessor, a computer, and/or multiple computers. A computer program canbe written in any form of computer or programming language, includingsource code, compiled code, interpreted code and/or machine code, andthe computer program can be deployed in any form, including as astand-alone program or as a subroutine, element, or other unit suitablefor use in a computing environment. A computer program can be deployedto be executed on one computer or on multiple computers at one or moresites.

Method steps can be performed by one or more processors executing acomputer program to perform functions of the invention by operating oninput data and/or generating output data. Method steps can also beperformed by, and an apparatus can be implemented as, special purposelogic circuitry, e.g., a FPGA (field programmable gate array), a FPAA(field-programmable analog array), a CPLD (complex programmable logicdevice), a PSoC (Programmable System-on-Chip), ASIP(application-specific instruction-set processor), or an ASIC(application-specific integrated circuit). Subroutines can refer toportions of the computer program and/or the processor/special circuitrythat implement one or more functions.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital or analog computer.Generally, a processor receives instructions and data from a read-onlymemory or a random access memory or both. The essential elements of acomputer are a processor for executing instructions and one or morememory devices for storing instructions and/or data. Memory devices,such as a cache, can be used to temporarily store data. Memory devicescan also be used for long-term data storage. Generally, a computer alsoincludes, or is operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. A computer canalso be operatively coupled to a communications network in order toreceive instructions and/or data from the network and/or to transferinstructions and/or data to the network. Computer-readable storagedevices suitable for embodying computer program instructions and datainclude all forms of volatile and non-volatile memory, including by wayof example semiconductor memory devices, e.g., DRAM, SRAM, EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and optical disks,e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memorycan be supplemented by and/or incorporated in special purpose logiccircuitry.

To provide for interaction with a user, the above described techniquescan be implemented on a computer in communication with a display device,e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display)monitor, for displaying information to the user and a keyboard and apointing device, e.g., a mouse, a trackball, a touchpad, or a motionsensor, by which the user can provide input to the computer (e.g.,interact with a user interface element). Other kinds of devices can beused to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, and/ortactile input.

The above described techniques can be implemented in a distributedcomputing system that includes a back-end component. The back-endcomponent can, for example, be a data server, a middleware component,and/or an application server. The above described techniques can beimplemented in a distributed computing system that includes a front-endcomponent. The front-end component can, for example, be a clientcomputer having a graphical user interface, a Web browser through whicha user can interact with an example implementation, and/or othergraphical user interfaces for a transmitting device. The above describedtechniques can be implemented in a distributed computing system thatincludes any combination of such back-end, middleware, or front-endcomponents.

The computing system can include clients and servers. A client and aserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The components of the computing system can be interconnected by any formor medium of digital or analog data communication (e.g., a communicationnetwork). Examples of communication networks include circuit-based andpacket-based networks. Packet-based networks can include, for example,the Internet, a carrier internet protocol (IP) network (e.g., local areanetwork (LAN), wide area network (WAN), campus area network (CAN),metropolitan area network (MAN), home area network (HAN)), a private IPnetwork, an IP private branch exchange (IPBX), a wireless network (e.g.,radio access network (RAN), 802.11 network, 802.16 network, generalpacket radio service (GPRS) network, HiperLAN), and/or otherpacket-based networks. Circuit-based networks can include, for example,the public switched telephone network (PSTN), a private branch exchange(PBX), a wireless network (e.g., RAN, bluetooth, code-division multipleaccess (CDMA) network, time division multiple access (TDMA) network,global system for mobile communications (GSM) network), and/or othercircuit-based networks.

Devices of the computing system and/or computing devices can include,for example, a computer, a computer with a browser device, a telephone,an IP phone, a mobile device (e.g., cellular phone, personal digitalassistant (PDA) device, laptop computer, electronic mail device), aserver, a rack with one or more processing cards, special purposecircuitry, and/or other communication devices. The browser deviceincludes, for example, a computer (e.g., desktop computer, laptopcomputer) with a world wide web browser (e.g., Microsoft® InternetExplorer® available from Microsoft Corporation, Mozilla® Firefoxavailable from Mozilla Corporation). A mobile computing device includes,for example, a Blackberry®. IP phones include, for example, a Cisco®Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco®Unified Wireless Phone 7920 available from Cisco System, Inc.

One skilled in the art will realize the invention may be embodied inother specific forms without departing from the spirit or essentialcharacteristics thereof. The foregoing embodiments are therefore to beconsidered in all respects illustrative rather than limiting of theinvention described herein. Scope of the invention is thus indicated bythe appended claims, rather than by the foregoing description, and allchanges that come within the meaning and range of equivalency of theclaims are therefore intended to be embraced therein.

1. A computer-implemented method for dynamically customizing a userinterface, the method comprising: storing, at a computing device,multiple functions for a user interface, wherein each of the storedfunctions is configured to operate on a remote user device, inconjunction with the user interface, and wherein the user interface isconfigured to operate at the remote user device; transmitting a firstset of data to the remote user device, wherein the first set of datacauses a first one of the stored functions to operate on the remote userdevice, wherein operating on the remote user device includes operatingin conjunction with the user interface; receiving, at the computingdevice, interaction data associated with user interactions with the userinterface, the interactions occurring at the remote user device;identifying a second set of data based on the received interaction data,wherein the second set of data is identified at the computing device;and transmitting the second set of data from the computing device to theremote user device, wherein the second set of data causes a second oneof the stored functions to operate on the remote user device, inconjunction with the user interface.
 2. The method of claim 1, whereinthe first one of the stored functions is associated with a selectabledisplay feature presented in conjunction with the user interface.
 3. Themethod of claim 2, wherein the first one of the stored functions isfurther configured to operate on the remote device in response to a userselecting the selectable display feature.
 4. The method of claim 1,wherein the user interface is a chat window configured to facilitatechat between a user and a third party.
 5. The method of claim 1, whereinat least one of the first one of the stored functions and the second oneof the stored functions includes: an agent function which providesinformation about an agent in communication with a user of the remotedevice; a shopping cart function configured to identify a set ofproducts selected by a user while browsing a website; a data transferfunction configured to download data to the remote user device or toenable data to be pushed to the remote user device; a video functionconfigured to provide a control mechanism to a user, the controlmechanism for controlling playback of video content; an audio functionconfigured to provide an audio control mechanism to a user, wherein theaudio control mechanism is for controlling playback of audio content; asecure information transfer function configured to protect personal orconfidential information being communicated through the user interface.6. The method of claim 1, further comprising: receiving data describingan agent device function, wherein the agent device function isconfigured to operate on a remote agent device, in conjunction with anagent user interface; and storing the agent device function at thecomputing device.
 7. The method of claim 1, further comprisingtransmitting the interaction data from the computing device to a remoteagent device.
 8. The method of claim 7, further comprising: receivingaction data at the computing device, wherein the action data istransmitted by the remote user device, wherein the action data indicatesthe occurrence of a user action at the remote user device, and whereinthe user action is associated with the first or second function; andtransmitting the action data to the remote agent device.
 9. The methodof claim 1, further comprising: receiving selection data from the remoteuser device, wherein selection data communicates information related toa user selection of one of the stored functions for the user interface;and transmitting a third set of data to the remote user device, whereinthe third set of data causes the selected one of the stored functions tooperate on the remote user device, wherein operating on the remote userdevice includes operating in conjunction with the user interface, andwherein the selected one of the stored functions is different from thefirst one of the stored functions and the second one of the storedfunctions.
 10. The method of claim 1, further comprising: identifying afourth set of data based on the interaction; transmitting the fourth setof data to the remote user device, wherein the fourth set of data causesa fourth one of the stored functions to operate on the remote userdevice.
 11. The method of claim 10, wherein the fourth stored functionis for tracking events on the remote user device which occur inconjunction with the user interface.
 12. The method of claim 1, whereinidentifying the second set of data is further based on at least one of:data indicative of a change made to the user interface; and dataindicative of user interface behavior.
 13. A computer-implemented systemfor dynamically customizing a user interface, the system comprising: oneor more processors configured to perform operations, the operationsincluding: storing, at a computing device, multiple functions for a userinterface, wherein each of the stored functions is configured to operateon a remote user device, in conjunction with the user interface, andwherein the user interface is configured to operate at the remote userdevice; transmitting a first set of data to the remote user device,wherein the first set of data causes a first one of the stored functionsto operate on the remote user device, wherein operating on the remoteuser device includes operating in conjunction with the user interface;receiving, at the computing device, interaction data indicative of userinteractions with the user interface, the interactions occurring at theremote user device; identifying a second set of data based on thereceived interaction data, wherein the second set of data is identifiedat the computing device; and transmitting the second set of data fromthe computing device to the remote user device, wherein the second setof data causes a second one of the stored functions to operate on theremote user device, in conjunction with the user interface.
 14. Thesystem of claim 13, wherein the first one of the stored functions isassociated with a selectable display feature in the user interface. 15.The system of claim 14, wherein the first one of the stored functions isfurther configured to operate on the remote device in response to a userselecting the selectable display feature.
 16. The system of claim 13,wherein the user interface is a chat window configured to facilitatechat between a user and a third party.
 17. The system of claim 13,wherein at least one of the first function and the second function ofthe stored set of functions includes: an agent function which providesinformation about an agent in communication with a user of the remotedevice; a shopping cart function configured to identify a set ofproducts selected by a user while browsing a website; a data transferfunction configured to download data to the remote user device or toenable data to be pushed to the remote user device; a video functionconfigured to provide a control mechanism to a user, the controlmechanism for controlling playback of video content; an audio functionconfigured to provide an audio control mechanism to a user, wherein theaudio control mechanism is for controlling playback of audio content; asecure information transfer function configured to protect personal orconfidential information being communicated through the user interface.18. The system of claim 13, wherein the operations further include:receiving data describing a third function, wherein the third functionis configured to operate on a remote agent device, in conjunction withan agent user interface; and storing the third function at the computingdevice.
 19. The system of claim 13, wherein the operations furtherinclude transmitting the interaction data to a remote agent device. 20.The system of claim 19, wherein the operations further include:receiving action data, wherein the action data is transmitted by theremote user device, and wherein the action data indicates the occurrenceof a user action at the remote user device, and wherein the user actionis associated with the first or second function; and transmitting theaction data to the remote agent device.
 21. The system of claim 13,wherein the operations further include: receiving selection data fromthe remote user device, wherein selection data communicates informationrelated to a user selection of a third one of the stored functions forthe user interface; and transmitting a third set of data to the remotedevice, wherein the third set of data causes the third stored functionto operate on the remote user device, wherein operating on the remoteuser device includes operating in conjunction with the user interface.22. The system of claim 13, wherein the operations further include:identifying a fourth set of data based on the interaction; transmittingthe fourth set of data to the remote user device, wherein the fourth setof data causes a fourth one of the stored functions to operate on theremote user device.
 23. The system of claim 22, wherein the fourthstored function is for tracking events on the remote user device whichoccur in conjunction with the user interface.
 24. The system of claim13, wherein identifying the second set of data is further based on atleast one of: data indicative of a change made to the user interface;and data indicative of user interface behavior.
 25. A computer-programproduct for dynamically customizing a user interface, thecomputer-program product including a non-transitory computer-readablestorage medium, the storage medium having instructions stored thereon,the instructions executable to cause a computing device to performoperations including: storing, at the computing device, multiplefunctions for a user interface, wherein each of the stored functions isconfigured to operate on a remote user device, in conjunction with theuser interface, and wherein the user interface is configured to operateat the remote user device; transmitting a first set of data to theremote user device, wherein the first set of data causes a first one ofthe stored functions to operate on the remote user device, whereinoperating on the remote user device includes operating in conjunctionwith the user interface; receiving, at the computing device, interactiondata indicative of user interactions with the user interface, theinteractions occurring at the remote user device; identifying a secondset of data based on the received interaction data, wherein the secondset of data is identified at the computing device; and transmitting thesecond set of data from the computing device to the remote user device,wherein the second set of data causes a second one of the storedfunctions to operate on the remote user device, in conjunction with theuser interface.
 26. The computer-program product of claim 25, whereinthe first one of the stored functions is associated with a selectabledisplay feature in the user interface.
 27. The computer-program productof claim 26, wherein the first one of the stored functions is furtherconfigured to operate on the remote device in response to a userselecting the selectable display feature.
 28. The computer-programproduct of claim 25, wherein the user interface is a chat windowconfigured to facilitate chat between a user and a third party.
 29. Thecomputer-program product of claim 25, wherein at least one of the firstfunction and the second function of the stored set of functionsincludes: an agent function which provides information about an agent incommunication with a user of the remote device; a shopping cart functionconfigured to identify a set of products selected by a user whilebrowsing a website; a data transfer function configured to download datato the remote user device or to enable data to be pushed to the remoteuser device; a video function configured to provide a control mechanismto a user, the control mechanism for controlling playback of videocontent; an audio function configured to provide an audio controlmechanism to a user, wherein the audio control mechanism is forcontrolling playback of audio content; a secure information transferfunction configured to protect personal or confidential informationbeing communicated through the user interface.
 30. The computer-programproduct of claim 25, wherein the operations further include: receivingdata describing a third function, wherein the third function isconfigured to operate on a remote agent device, in conjunction with anagent user interface; and storing the third function at the computingdevice.
 31. The computer-program product of claim 25, wherein theoperations further include transmitting the interaction data to a remoteagent device.
 32. The computer-program product of claim 31, wherein theoperations further include: receiving action data, wherein the actiondata is transmitted by the remote user device, and wherein the actiondata indicates the occurrence of a user action at the remote userdevice, and wherein the user action is associated with the first orsecond function; and transmitting the action data to the remote agentdevice.
 33. The computer-program product of claim 25, wherein theoperations further include: receiving selection data from the remoteuser device, wherein selection data communicates information related toa user selection of a third one of the stored functions for the userinterface; and transmitting a third set of data to the remote device,wherein the third set of data causes the third stored function tooperate on the remote user device, wherein operating on the remote userdevice includes operating in conjunction with the user interface. 34.The computer-program product of claim 25, wherein the operations furtherinclude: identifying a fourth set of data based on the interaction;transmitting the fourth set of data to the remote user device, whereinthe fourth set of data causes a fourth one of the stored functions tooperate on the remote user device.
 35. The computer-program product ofclaim 34, wherein the fourth stored function is for tracking events onthe remote user device which occur in conjunction with the userinterface.
 36. The computer-program product of claim 25, whereinidentifying the second set of data is further based on at least one of:data indicative of a change made to the user interface; and dataindicative of user interface behavior.